<script>
  import Vue from 'vue';
  // #ifdef APP-PLUS || H5
  import {
    TUIChatKit,
    genTestUserSig
  } from "./TUIKit";
  import {
    vueVersion
  } from "./TUIKit/adapter-vue";
  import {
    TUILogin
  } from "@tencentcloud/tui-core";
  import TencentCloudChat from '@tencentcloud/chat';
  // #endif
  // 必填信息



  // #ifdef APP-PLUS || H5
  // uni.$chat_userSig = genTestUserSig(config).userSig;
  // TUIChatKit 初始化
  TUIChatKit.init();
  // #endif
  export default {
    onLaunch: function() {
      let options = {
        SDKAppID: 1600034847 // 接入时需要将0替换为您的即时通信应用的 SDKAppID
      };
      uni.$TIM = TencentCloudChat.create(options); // SDK 实例通常用 chat 表示
      this.$store.commit('initApp')
      // #ifdef APP-PLUS || H5
      // TUICore login
      // TUILogin.login({
      //   SDKAppID: uni.$chat_SDKAppID,
      //   userID: uni.$chat_userID,
      //   // UserSig 是用户登录即时通信 IM 的密码，其本质是对 UserID 等信息加密后得到的密文。
      //   // 该方法仅适合本地跑通 Demo 和功能调试，详情请参见 https://cloud.tencent.com/document/product/269/32688
      //   userSig: uni.$chat_userSig,
      //   // 如果您需要发送图片、语音、视频、文件等富媒体消息，请设置为 true
      //   useUploadPlugin: true,
      //   // 本地审核可识别、处理不安全、不适宜的内容，为您的产品体验和业务安全保驾护航
      //   // 此功能为增值服务，请参考：https://cloud.tencent.com/document/product/269/79139
      //   // 如果您已购买内容审核服务，开启此功能请设置为 true
      //   useProfanityFilterPlugin: false,
      //   framework: `vue${vueVersion}` // 当前开发使用框架 vue2 / vue3
      // });
      // #endif

      uni.getSystemInfo({
        success: function(e) {
          // #ifndef MP
          Vue.prototype.StatusBar = e.statusBarHeight
          if (e.platform == 'android') {
            Vue.prototype.CustomBar = e.statusBarHeight + 50
          } else {
            Vue.prototype.CustomBar = e.statusBarHeight + 45
          }
          // #endif
          // #ifdef MP-WEIXIN
          Vue.prototype.StatusBar = e.statusBarHeight
          let custom = wx.getMenuButtonBoundingClientRect()
          Vue.prototype.Custom = custom
          Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight
          // #endif
          // #ifdef MP-ALIPAY
          Vue.prototype.StatusBar = e.statusBarHeight
          Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight
          // #endif
          let unitRatio = 750 / uni.getSystemInfoSync().windowWidth
          Vue.prototype.StatusBarRpx = Vue.prototype.StatusBar * unitRatio
          Vue.prototype.CustomBarRpx = Vue.prototype.CustomBar * unitRatio
          Vue.prototype.unitRatio = unitRatio
          Vue.mixin({
            data() {
              return {
                StatusBar: Vue.prototype.StatusBar, //状态栏高度(px)
                CustomBar: Vue.prototype.CustomBar, //整个标题栏高度(px)
                StatusBarRpx: Vue.prototype.StatusBarRpx, //状态栏高度(rpx)
                CustomBarRpx: Vue.prototype.CustomBarRpx, //整个标题栏高度(rpx)
              }
            },
          })
        },
      })
      // #ifdef APP-PLUS
      // 锁定屏幕显示方向为竖屏正方向
      plus.screen.lockOrientation('portrait-primary')
      // 推送服务
      // plus.push.addEventListener('click', (message) => {
      //   this.pushCallback(message)
      // })
      // #endif
      global.token && this.$store.dispatch('getCartList')
    },
    onShow: function() {
      // if (global.token) {
      //   this.$api.get(global.apiUrls.post657a9b8d16d9b, {

      //   }).then(res => {
      //     if (res.data.code == 1) {
      //       let chatnums = 0
      //       if (uni.$TIM.isReady()) {
      //         chatnums = TUILogin.chat.getTotalUnreadMessageCount();
      //         // this.$store.commit('getNum', nums);

      //       }
      //       let totaoNum = parseFloat(chatnums) + parseFloat(res.data.data.total)
      //       uni.setTabBarBadge({
      //         index: 3,
      //         text: totaoNum.toString()
      //       })
      //     }
      //   })
      // }
      console.log('APP Show')
      // #ifdef APP-PLUS
      // 获取参数
      const args = plus.runtime.arguments
      if (args) {
        plus.runtime.arguments = null
        plus.runtime.arguments = ''
        let params_str = args.split('?')[1]
        if (params_str) {
          let params = params_str.split('&').reduce(function(total, item) {
            let arr = item.split('=')
            total[arr[0]] = arr[1]
            return total
          }, {})
          console.log('params', params)
          // params 参数: path 跳转路径 options 参数
          uni.navigateTo({
            url: `${params.path}?goods_id=${params.goods_id}&activity_id=${params.activity_id}&sku_id=${params.sku_id}&bargain_id=${params.bargain_id}`,
          })
        }
      }
      // #endif
    },
    onHide: function() {
      // 用户退出app时，把二次验证状态改为true
      console.log('APP Hide')
    },
    methods: {
      // 推送回调
      pushCallback(message) {
        this.$urouter.navigateTo('/pages/service-message/message/message-type/index')
      },
      // #ifdef APP-PLUS
      // 权限检查
      checkPermissions() {
        // #ifdef APP-PLUS
        if (plus.os.name == 'Android') {
          // 判断是Android
          var main = plus.android.runtimeMainActivity()
          var pkName = main.getPackageName()
          var uid = main.getApplicationInfo().plusGetAttribute('uid')
          var NotificationManagerCompat = plus.android.importClass('android.support.v4.app.NotificationManagerCompat')
          var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled()
          // 未开通‘允许通知’权限，则弹窗提醒开通，并点击确认后，跳转到系统设置页面进行设置
          if (!areNotificationsEnabled) {
            uni.showModal({
              title: this.$t('通知权限开启提醒'),
              content: this.$t('您还没有开启通知权限，无法接受到消息通知，是否前往设置？'),
              success: function(res) {
                if (res.confirm) {
                  var Intent = plus.android.importClass('android.content.Intent')
                  var Build = plus.android.importClass('android.os.Build')
                  //android 8.0引导
                  if (Build.VERSION.SDK_INT >= 26) {
                    var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS')
                    intent.putExtra('android.provider.extra.APP_PACKAGE', pkName)
                  } else if (Build.VERSION.SDK_INT >= 21) {
                    //android 5.0-7.0
                    var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS')
                    intent.putExtra('app_package', pkName)
                    intent.putExtra('app_uid', uid)
                  } else {
                    //(<21)其他--跳转到该应用管理的详情页
                    intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
                    var uri = Uri.fromParts('package', mainActivity.getPackageName(), null)
                    intent.setData(uri)
                  }
                  // 跳转到该应用的系统通知设置页
                  main.startActivity(intent)
                }
              },
            })
          }
        } else if (plus.os.name == 'iOS') {
          // 判断是IOS
          var isOn = undefined
          var types = 0
          var app = plus.ios.invoke('UIApplication', 'sharedApplication')
          var settings = plus.ios.invoke(app, 'currentUserNotificationSettings')
          if (settings) {
            types = settings.plusGetAttribute('types')
            plus.ios.deleteObject(settings)
          } else {
            types = plus.ios.invoke(app, 'enabledRemoteNotificationTypes')
          }
          plus.ios.deleteObject(app)
          isOn = 0 != types
          if (isOn == false) {
            uni.showModal({
              title: this.$t('通知权限开启提醒'),
              content: this.$t('您还没有开启通知权限，无法接受到消息通知，是否前往设置？'),
              success: function(res) {
                if (res.confirm) {
                  var app = plus.ios.invoke('UIApplication', 'sharedApplication')
                  var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:')
                  plus.ios.invoke(app, 'openURL:', setting)
                  plus.ios.deleteObject(setting)
                  plus.ios.deleteObject(app)
                }
              },
            })
          }
        }
        // #endif
      },
      // #endif
    },
  }
</script>

<style lang="scss">
  /* #ifndef APP-PLUS-NVUE */
  @import './style/icon.css';
  @import './style/main.css';
  @import './style/animation.css';
  @import './style/iconfont.css';
  @import './style/common.scss';
  @import './style/diyStyle.scss';

  /* #endif */
  /*每个页面公共css */
  uni-page-body,
  html,
  body,
  page {
    width: 100% !important;
    height: 100% !important;
    // background: #261C3E;
    // overflow: hidden;
  }
</style>
